import store from '@/store'
import { Message, Notification } from 'element-ui'

// 登陆成功 ok
function deviceAuthRspHandle(msg) {
    let currentUser = JSON.parse(msg.message).Extra
    // 隐藏登陆页面的loading
    store.commit('websocket/SET_LOGIN_LOADING', false)
    // 设置用户信息
    store.commit('SET_USER', currentUser)
    // 设置token信息
    store.commit('SET_TOKEN', JSON.parse(msg.message).AccessToken)
    // 设置已经登陆
    store.commit('websocket/SET_LOGINED', 1)
    // 设置自动登陆
    store.commit('SET_AUTO_LOGIN', 1)

    // 如果是electron
    if (process.env.VUE_APP_CURRENTMODE === 'electron') {
        const { ipcRenderer } = window.require('electron')
        ipcRenderer.send('operations', 'login')
    }

    // 设置wechatid和好友的对应关系
    store.dispatch('nedb/SetFriendsMap')
    // 设置群聊id和群聊的对应关系
    store.dispatch('nedb/SetChatRoomsMap')
    // 设置自动打招呼配置文件
    store.dispatch('nedb/SetAutoHiConfig')
    // 设置自动回复配置文件
    store.dispatch('nedb/SetAutoReply')
    // 设置红包账单
    store.dispatch('nedb/SetLuckMoneyMap')


    // 获取微信列表
    store.dispatch('websocket/GetWeChatsReq')

    if (store.state.route.path === '/login') {
        // 如果是第一次登陆，跳转到会话页面，后台重新登陆
        store.commit('route/ROUTE_CHANGED', { to: { path: '/' } })
    } else {
        // 后台自动登陆
    }
}

// 微信列表 ok
function getWeChatsRspHandle(msg) {
    let message = JSON.parse(msg.message)
    let wechats = message.WeChats ? message.WeChats : []
    store.commit('conversation/SET_WECHATS', wechats)
}

// 已登陆的微信处理 ok
function weChatLoginNoticeRespHandle(msg) {
    let message = JSON.parse(msg.message)
    // 遍历登陆的微信
    if (message && message.WeChats) {
        let wechats = JSON.parse(msg.message).WeChats
        for (const wechatId of wechats) {
            // 获取最新的会话
            store.dispatch('websocket/TriggerConversationPushTask', wechatId)
            // 修改本地不在线微信的信息
            // store.commit('conversation/MODIFY_WECHATS', { WeChatId: wechatId, IsLogined: true, IsOnline: true })
        }
    }
    // 重新获取微信列表
    store.dispatch('websocket/GetWeChatsReq')
}

// 标签列表 ok
function contactLabelInfoNoticeHandle(msg) {
    let message = JSON.parse(msg.message)
    if (message.Labels && message.Labels.length > 0) {
        store.dispatch('nedb/UpdateOrAddLabels', message)
    }
}

// 微信下线通知处理 ok
// 本地更新信息
// 该接口不会立马通知 当发消息的时候会触发
function weChatOfflineNoticeHandle(msg) {
    let mj = JSON.parse(msg.message)
    let wechatNick = mj.WeChatId
    for (const wechat of store.getters['conversation/wechats']) {
        if (wechat.WeChatId === mj.WeChatId) {
            wechatNick = wechat.WeChatNick
            break
        }
    }
    // 通知提示提示微信已经下线
    Notification({
        title: '提示',
        type: 'warning',
        message: `${wechatNick} 下线了！`,
        position: 'top-right',
        offset: 50,
        duration: 0,
        showClose: true
    })
    // 修改本地不在线微信的信息
    store.commit('conversation/MODIFY_WECHATS', { WeChatId: mj.WeChatId, IsLogined: false, IsOnline: false })
}

// 微信上线 上线后自动登陆
function weChatOnlineNoticeHandle(msg) {
    let mj = JSON.parse(msg.message)
    // 提示某某已经上线
    Message({
        type: 'success',
        message: `${mj.WeChatNick} 上线了！`,
        duration: 1000,
    })
    let wechats2login = []
    let wechats = store.getters['conversation/wechats']
    // 已经登陆的微信
    for (const wechat of wechats) {
        if (wechat.IsOnline || wechat.WeChatId === mj.WeChatId) {
            wechats2login.push({
                WeChatId: wechat.WeChatId,
                IsLogin: true
            })
        } else {
            wechats2login.push({
                WeChatId: wechat.WeChatId,
                IsLogin: false
            })
        }
    }
    // 上线后自动登陆
    store.dispatch('websocket/WeChatLoginNotice', wechats2login)
}

export default {
    deviceAuthRspHandle,
    getWeChatsRspHandle,
    weChatLoginNoticeRespHandle,
    contactLabelInfoNoticeHandle,
    weChatOfflineNoticeHandle,
    weChatOnlineNoticeHandle
}
